iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
DevOps

探索亞馬遜雨林30天系列 第 9

Day 9: 如何透過AWS KMS加解密資料

  • 分享至 

  • xImage
  •  

當系統在處理和儲存客戶資料時,常有一些機敏資料或api key需存放在資料庫,不管是洩漏個資還是api key,都會造成嚴重的資安危機,所以當需要把這些資料存放在資料庫時,可以透過一些AWS加解密的服務對資料進行保護。

KMS是AWS所提供的加解密服務,user可以透過console和cli新增一把key,然後就可以使用這把key對資料作加解密,這把key由AWS保管,無法被直接拿出來使用,使用者也看不到這把key,預設會用Symmetric的方式作加密。下面就介紹要如何透過console和cli新增一把key:

  • cli
aws kms create-key --region us-east-1
  • console

新增key之後,可以看到key會有自己的Key ID,之後要做加解密的話,可以透過Key ID指定要使用哪一把key做加解密。

加密的話可以透過cli和撰寫程式碼做encrypt,如果是透過cli加密的話,資料需先做base64 encode。以c174c888–672a-4265-a532–4fc6cf8340ba這把需要加密的api key為例,先使用base64 encode成:

YzE3NGM4ODgtNjcyYS00MjY1LWE1MzItNGZjNmNmODM0MGJh

接著就可以透過cli進行encrypt。把需要加密的資料指定給plaintext這個參數。response中的CiphertextBlob,就是加密完的資料。

aws kms encrypt --key-id 1435c2bd-a16d-4041-b11b-b8d6ddb3e05e --plaintext YzE3NGM4ODgtNjcyYS00MjY1LWE1MzItNGZjNmNmODM0MGJh --region us-east-1


解密的話一樣可以透過cli或程式進行decrypt。這邊以cli為範例,可以看到response中的Plaintext就是解密過後的資料,取出來之後再用base64 decode,就可以看到原本的資料。

aws kms decrypt --key-id 1435c2bd-a16d-4041-b11b-b8d6ddb3e05e --ciphertext-blob AQICAHhsqBc9TT9Q9wPaCr9G5jaAQVjUx+JtiIMvEL/wwBskcgFs2dAppCy2+3dPZlkLoeCmAAAAgzCBgAYJKoZIhvcNAQcGoHMwcQIBADBsBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDK7A5olnsp51E7J88gIBEIA/0eHnZrN9JD2bAZ28aK2R5kKIqw6fJLlecb/BaRsyjxWBfsj/a8D6nn+1/rku1CZsbyNMaAhvTR02qk/ZEF7U --region us-east-1

參考資料:


上一篇
Day 8: 管理S3物件生命週期(下)
下一篇
Day 10: Serverless framework deploy(上)
系列文
探索亞馬遜雨林30天16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言